home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
tex
/
td187src.lzh
/
VARIABLE.D
< prev
next >
Wrap
Text File
|
1991-12-14
|
5KB
|
154 lines
DEFINITION MODULE Variablen;
(* Erweitert um Bezier-Curve, JP *)
(* Erweitert um EPIC-Lines, JP *)
(* ObjectRecord erweitert, JP *)
FROM MagicSys IMPORT sWORD, sINTEGER, lINTEGER;
FROM Types IMPORT ExtendedArraySize, ObjectPtrTyp,
CodeAryTyp, CharPtrTyp, ExtendedPtrTyp;
VAR FirstObject : ObjectPtrTyp ;
LastObject : ObjectPtrTyp ;
RefObject : ObjectPtrTyp ;
ebuffer : ARRAY [ 0..ExtendedArraySize ] OF sINTEGER ;
zoomfak : LONGREAL ;
PROCEDURE Visible ( SurroundRec : ARRAY OF sINTEGER ) : BOOLEAN ;
(* SurroundRec entspricht Surround in ObjectRecTyp *)
PROCEDURE Position ( ShowDelta : BOOLEAN;
XPos, YPos, XDelta, YDelta : sINTEGER ) ;
(*
Zeigt die momentane Maus-Position (XPos, YPos) an. Ist ShowDelta TRUE,
so wird zusätzlich noch der Abstand zum Punkt (XDelta,YDelta) angezeigt.
*)
PROCEDURE PixToPic ( xpix , ypix : sINTEGER; VAR xpic , ypic : sINTEGER);
PROCEDURE PicToPix ( VAR xpix , ypix : sINTEGER; xpic , ypic : sINTEGER);
(*
Mode = 1 :
Aus den Pixel-Angaben xpix, ypix werden die
Bild-Koordinaten xpic, ypic berechnet.
Mode = 2 : genau umgekehrt.
*)
PROCEDURE PixDistance ( picdist : sINTEGER ) : sINTEGER;
PROCEDURE PicDistance ( pixdist : sINTEGER ) : sINTEGER;
(*
Rechnet Pixel-Abstände in PIC-Abstände um und umgekehrt
*)
PROCEDURE ZoomMode (zoom : BOOLEAN; factor : LONGREAL);
(*
Schaltet Zoom-Modus an/aus
*)
PROCEDURE NewObject ( Code : CodeAryTyp ;
CPtr : CharPtrTyp ;
EPtr : ExtendedPtrTyp;
Surr : ARRAY OF sWORD ) ;
(*
Erzeugt ein neues Objekt im Baum. LastObject wird dann auf dieses
Objekt gesetzt. Ging alles gut so wird ObjectCreated aus CommonData
auf TRUE gesetzt.
*)
PROCEDURE DeleteObject ( Object : ObjectPtrTyp ) ;
(* Korrigiert keine Verweise !! *)
(* Dies muß von Hand erledigt werden *)
PROCEDURE DeleteWholeTree;
(* Löscht alle Objekte *)
PROCEDURE MergeToSubpic(LastNormalObject : ObjectPtrTyp;
SPX, SPY, SPW, SPH : sINTEGER) ;
(*
Faßt alle Objekte HINTER LastNormalObject zu einem Subpicture zusammen
SPX..SPH sind die Maße des neuen Subpics.
*)
PROCEDURE CheckConsistency;
(*
Überprüfung auf evtle. Unstimmigkeiten.
Z.Zt. nur Check auf leere Subpics
*)
(* Die Durchmesser der Kreise und Scheiben sind beschränkt. *)
(* Im LaTeX-Manual werden 40 pts bzw. 15 pts angegeben. *)
(* Somit ergeben sich folgende Radien. *)
(*
Merke: Die angegebenen Werte gelten für eine Auflösung
von 1/4 der momentanen \unitlength
MaxCircle MaxDisk
In mm: 21 8
In cm: 2 1 ( 10mm = 1cm )
In pt: 60 24 ( 1pt = 0.351mm)
In pc: 5 2 ( 1pc = 12pt )
In in: 1 1 ( 1in = 72.27pt)
In bp: 60 24 ( 72p = 1in )
In dd: 56 23 ( 1157dd = 1238pt )
In cc: 5 2 ( 1cc = 12dd )
In sp: 32767 32767 (65536sp = 1pt )
In pp: 249 100 ( 300pp = 1in ) (Laserdruckerauflösung)
*)
PROCEDURE MaxCircle() : sINTEGER;
PROCEDURE MaxDisk() : sINTEGER;
(*
Jetzt folgen Prozeduren, die die Umwandlung von Koordinaten in
Zeichenketten vorsehen:
*)
PROCEDURE NumberToStr(number : sINTEGER; VAR str : ARRAY OF CHAR);
(* Wandelt sINTEGER-Zahl in String, keine führenden Blanks *)
PROCEDURE FactorToStr(VAR factorstr : ARRAY OF CHAR);
(* Liefert Vorfaktor für \unitlength *)
PROCEDURE UnitToStr(VAR unitstr : ARRAY OF CHAR);
(* Liefert die einfache Einheit, z.B. mm *)
PROCEDURE CoordToStr(coord : sINTEGER; VAR str : ARRAY OF CHAR);
(* Liefert Angabe mit Einheit *)
PROCEDURE ValueToStr (value : sINTEGER; VAR str : ARRAY OF CHAR);
PROCEDURE Value10ToStr(value : lINTEGER; VAR str : ARRAY OF CHAR);
(*
Liefert Angabe in Einheiten der Basis-Einheit (pt, cm, mm...)
ohne Angabe dieser Einheit, also z.B. bei einer unitlength
von 1/10 * 1cm liefert bei CommonData.InternalResolution=2
der Integer-Wert von 40 den String "2.000"
beim Faktor 1/1 : "20.00"
beim Faktor 1/10 : "2.000"
beim Faktor 1/100: "0.2000"
beim Faktor 10/1 : "200.0"
beim Faktor 100/1: "2000"
*)
PROCEDURE SimpleValueToStr (value : sINTEGER; VAR str : ARRAY OF CHAR);
PROCEDURE SimpleValue10ToStr(value : lINTEGER; VAR str : ARRAY OF CHAR);
(*
Liefert Angabe Als Vielfaches der Basis-Einheit (pt, cm, mm...)
unter berücksichtigung des Vorfaktors ohne Angabe dieser Einheit,
also z.B. bei einer unitlength von 1/10 * 1cm liefert bei
CommonData.InternalResolution=2 der Integer-Wert von 40 den
String "20.00"
*)
PROCEDURE StrToCoord(VAR coord : sINTEGER; VAR str : ARRAY OF CHAR);
(* Wandelt Text in Koordinatenangabe *)
PROCEDURE StrToValue(VAR value : sINTEGER; VAR str : ARRAY OF CHAR);
(* Wandelt Text in Wertangabe *)
(**
PROCEDURE CheckSentinel(txt : ARRAY OF CHAR);
(* reine Debug-Funktion zum Aufspüren schwer lokalisierbarer Fehler *)
**)
END Variablen .